package org.nanfang.lianxi.demo06;

import java.util.concurrent.TimeUnit;

/**
 * 定义一个线程类 - 实现模拟数据采集 - 利用线程中断的方式停止线程
 *
 * @author ZQX
 * @date 2025-03-12
 */
public class MyThread extends Thread {
    @Override
    public void run() {
        while (true) {
            System.out.println("采集数据中...(此处省略100万行代码)");

            // 获取中断标记
            boolean flag = Thread.currentThread().isInterrupted();

            if (flag) {
                System.out.println("采集结束，做一些收尾工作，如：维护设备，汇总等！");
                break;
            }

            try {
                // 每隔 2 秒采集一次
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                // 二次中断，把清除的中断标记重新设置为true，便于退出
                Thread.currentThread().interrupt();
            }

        }
    }
}
